<template>
	<view class="contain">
		<view class="w-full flex flex-col justify-center items-center" @click="scanQrCode">
			<view class="mt-10"><u-icon name="scan" color="#ff6600" size="160"></u-icon></view>
			<view class="mt-2">点击开始扫码</view>
		</view>
		
		<!-- <view>{{tip}}</view> -->
		<block v-if="objData!=''">
			<view class="w-full flex justify-center items-center Entrance">
				<view class="w-[85%] mt-10 flex flex-wrap justify-between items-center row">
					<view v-for="item in itemList.data" @click="goThis(item)"><u-button type="primary" :text="item"></u-button></view>
				</view>
			</view>
			<!-- 二维码 -->
			<view class="flex justify-center items-center" v-if="showQrCode"><canvas id="qrcode" canvas-id="qrcode" style="width: 200px;height: 200px;"></canvas></view>
			<!-- 数据信息 -->
			<view class="w-[100%] mt-5" style="color:red; word-break: break-all;" v-if="errormsg!=''">{{errormsg}}</view>
			<view class="w-[100%] mt-5" style="border:1px solid lightgray; word-break: break-all;">{{tip}}</view>
			<view class="w-[100%] mt-5"><u-button type="error" text="清除" shape="circle" @click="clearData"></u-button></view>
		</block>
	</view>
</template>


<script setup lang='ts'>
import UQRCode from 'uqrcodejs';
import { ref,reactive } from 'vue'
import {  onLoad,onShow } from '@dcloudio/uni-app'
import { userStore } from '@/stores/userStore'
const store = userStore();
let showQrCode=ref(false);
let tip=ref('');
let errormsg=ref('');
let userDataInfo=reactive<any>({data:null});
let objData=reactive<any>({data:null});
let itemList=reactive({data:[
	"参数设置",
	"返回首页",
	"支付结果",
	"我的二维码",
	"复制二维码数据到本机"
]});
const goThis=(name:string)=>{
	if(name==='参数设置') return uni.$tools.GoUrl("/pages/shop_set/shop_set",2);
	if(name==='返回首页') return uni.$tools.GoUrl("/pages/shopindex/index",2);
	if(name==='返佣结果') return uni.$tools.GoUrl("/pages/shop_result/shop_result");
	if(name==='我的二维码'){
		qrCode(userDataInfo.data);
	}
	if(name==='复制二维码数据到本机') return uni.$tools.GoUrl("/pages/shop_shop_scanData2SaveLocal/shop_shop_scanData2SaveLocal");
}
const scanQrCode=()=>{
	// 允许从相机和相册扫码
	uni.scanCode({
		success:(res)=> {
			console.log('条码类型：' + res.scanType);
			console.log('条码内容：' + res.result);
			tip.value="【二维码扫码内容】"+res.result;
			objData.data=res.result;
			let targetScan=JSON.parse(objData.data);
			console.log("扫码数据",targetScan);
			console.log("角色",targetScan.role);
			if(userDataInfo.data!=null){
				
				//console.log("用户数据存在",userDataInfo.data,userDataInfo.data.sid!="" && userDataInfo.data.superiors!="")
				
				//判断用户是否已给商家绑定
				if(targetScan.sid!="" && targetScan.superiors!=""){
					uni.$tools.Toast("绑定无效,该用户已是"+targetScan.superiors+"绑定会员!");
					errormsg.value="绑定无效,该用户已是"+targetScan.superiors+"绑定会员!";
					return;
				}
				
				//个人扫个人 或者 网红扫个人
				if((userDataInfo.data.role==='personal' || userDataInfo.data.role==='hot') && targetScan.role==='personal'){
					
						let role=userDataInfo.data.role;
					
						userDataInfo.data.action=userDataInfo.data.role==='hot'?"h2p":"p2p";
						
						userDataInfo.data.bindType="personal"; //绑定的类型，是商家，个人，还是网红
						userDataInfo.data.personalRate=0.03;
						
						if(role==='personal'){
							userDataInfo.data.superiors_pid=userDataInfo.data.id; //上级id,当前扫码人的id
							userDataInfo.data.id=targetScan.id; //这里要交换下id
							userDataInfo.data.superiors_personal=userDataInfo.data.personalName;  //上级名称,当前扫码人的名称
							userDataInfo.data.personalName=targetScan.personalName;  //这里要交换下名称
							errormsg.value="个人扫个人绑定: "+userDataInfo.data.superiors_pid+" , "+userDataInfo.data.superiors_personal;
						}
						if(role==='hot'){
							userDataInfo.data.superiors_hot=userDataInfo.data.hotName;
							userDataInfo.data.superiors_hot_Recommand_personalId=targetScan.id; //扫码的商家的id
							userDataInfo.data.superiors_hot_Recommand_personalName=targetScan.personalName; //扫码的商家的名称
							
							//这里需要转换下身份，复制数据到另外一台手机操作
							userDataInfo.data.role="personal";
							userDataInfo.data.personalName=targetScan.personalName; //这里要交换下名称和角色到另外1台机子上
							
							errormsg.value="网红扫个人绑定: "+userDataInfo.data.superiors_hot_Recommand_personalId+" , "+userDataInfo.data.superiors_hot_Recommand_personalName;
						}
						
						userDataInfo.data.isBeenDeveloped=false; //个人开发完后，还可以给商家开发
						tip.value="个人扫个人绑定结果: "+JSON.stringify(userDataInfo.data);
				}
				
				
				//个人扫商家
				if(userDataInfo.data.role==='personal' && targetScan.role==='merchant'){
				
				    //绑定的类型，是商家，个人，还是网红
					userDataInfo.data.bindType="merchant";
						
					//已经给个人扫绑过 
					if(userDataInfo.data.superiors_pid!=""){ 
						userDataInfo.data.action="pp2m";
						userDataInfo.data.personalRate=0.03; //个人返佣 0.03
						userDataInfo.data.merchantRate=0.01; //商家返佣 0.01
					}else{
						userDataInfo.data.action="p2m";
						userDataInfo.data.personalRate=0; //个人返佣 0
						userDataInfo.data.merchantRate=0.04; //商家一次性返佣 0.04
					}
					
					userDataInfo.data.sid=targetScan.id; //上级商家id
					userDataInfo.data.superiors=targetScan.merchantName;  //上级商家名称
					userDataInfo.data.isBeenDeveloped=true; //用户已给人推荐
					//*/	
					tip.value="个人扫商家绑定结果: "+JSON.stringify(userDataInfo.data);
					errormsg.value="已绑定商家id: "+userDataInfo.data.sid+" , "+userDataInfo.data.superiors;
				}
				
				
				//网红推荐商家
				if(userDataInfo.data.role==='merchant' && targetScan.role==='hot'){
					//绑定类型
					userDataInfo.data.bindType="hot";
					//绑定行为 -- 网红推荐商家
					userDataInfo.data.action="h2m";
					userDataInfo.data.personalRate=0.03; //享受商家3%
					
					userDataInfo.data.superiors_hot=userDataInfo.data.hotName;
					userDataInfo.data.superiors_hot_Recommand_merchantId=targetScan.id; //上级商家id
					userDataInfo.data.superiors_hot_Recommand_merchantName=targetScan.merchantName;  //上级商家名称
					
					//这里需要转换下身份，复制数据到另外一台手机操作
					//只需要转换下角色即可
					userDataInfo.data.role="hot";
					
					tip.value="网红扫商家绑定结果: "+JSON.stringify(userDataInfo.data);
					errormsg.value="网已绑定商家id: "+userDataInfo.data.superiors_hot_Recommand_merchantId+" , "+userDataInfo.data.superiors_hot_Recommand_merchantName;
				}
				
				
				
				//1.更新当前缓存信息
				//2.到了这一步,个人绑个人信息已刷新,继续使用当前页面扫商家码
				uni.setStorageSync("setting",userDataInfo.data);
				
			}else{
				console.log("用户数据不存在")
			}
			//setting  是用户自己信息，不能覆盖和删除
			//objData 是扫码的用户数据
			uni.setStorageSync("objData",objData.data); 
		},
		fail:err=>{
			tip.value=err;
		}
	});
}
onShow(()=>{
	/*
	let readData=uni.getStorageSync("objData") || null;
	if(readData!=null){
		objData.data=readData;
		tip.value=readData;
	}
	//*/
	
	let readUser=uni.getStorageSync("setting") || null;
	if(readUser!=null){
		//console.log("readUser",JSON.parse(JSON.stringify(readUser)));
		userDataInfo.data=JSON.parse(JSON.stringify(readUser));
		console.log("当前用户信息:",userDataInfo.data);
	}
});		
const clearData=()=>{
	uni.showModal({
		title:"操作提示",
		content:"是否清空数据",
		showCancel:true,
		success:res=>{
			if(res.confirm){
				 //setting  是用户自己信息，不能覆盖和删除
				//objData 是扫码的用户数据
				uni.removeStorageSync("objData");
				objData.data="";
				tip.value="";
				errormsg.value="";
			}
		}
	})
}
const qrCode=(ewmdata:any)=>{
	uni.showLoading({
		title:"正在生成二维码"
	})
  // 获取uQRCode实例
  var qr = new UQRCode();
  // 设置二维码内容
  //qr.data = "https://uqrcode.cn/doc";
  // let obj={
	 //  id:para.data.id,
	 //  role:chinese2english(para.data.role),
	 //  expired:para.data.expiredDate //二维码过期时间
  // }
  //console.log("生成二维码数据:",userDataInfo.data)
  tip.value="【生成二维码数据】"+JSON.stringify(ewmdata);
  qr.data =JSON.stringify(ewmdata);
  // 设置二维码大小，必须与canvas设置的宽高一致
  qr.size = 200;
  // 调用制作二维码方法
  qr.make();
  // 获取canvas上下文
  var canvasContext = uni.createCanvasContext('qrcode', this); // 如果是组件，this必须传入
  // 设置uQRCode实例的canvas上下文
  qr.canvasContext = canvasContext;
  // 调用绘制方法将二维码图案绘制到canvas上
  qr.drawCanvas();	
  uni.hideLoading();
  showQrCode.value=true;
}
</script>

<style lang='scss' scoped>
	@import "shop_scanQrcode.scss";
</style>